#include <stdio.h>
//联合体
//像结构体一样，联合体也是由一个或多个成员构成，这些成员可以是不同的类型
//但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员公用一块内存空间，所以联合体也叫：共用体
//给一个成员赋值，其他成员的值也跟着变化
//同一时间只用一个成员

//结构体            联合体
//struct            union
//多个成员          多个成员
//成员有独立空间     成员公用一块空间

union Un
{
    char c;
    int i;
};

union UN
{
    char c[5];
    int i;
};
//联合体的大小至少是最大成员的大小
//当最大成员大小不是最大对齐数的整数倍时，就要对齐到最大对齐数的整数倍

int main()
{
    union Un u = {0};

    //printf("%d\n", sizeof(u));//4
    //printf("%p\n", &u);
    //printf("%p\n", &(u.i));
    //printf("%p\n", &(u.c));

    u.i = 0x11223344;
    u.c = 0x55;//此时u被改为11223355//先改低地址处


    return 0;
}